//-----------------------------------------------------------
// Cours :             LOG120
// Session :           AU 2011
// Groupe :            04
// Projet :            TP3
// Etudiant(e)(s) :    Hugo Trudel
//                     Jean-Philippe Roy
// Code(s) perm. :     TRUH30069104
//                     ROYJ10029008
// Professeur :        Sebastien Adam
// Nom du fichier :    BrelanTest.java
// Date cree :         2011-11-15
// Date dern. modif.   2011-11-18
//-----------------------------------------------------------
// Historique des modifications
//-----------------------------------------------------------
//  2011-11-15	: Creation de la classe et des tests de base
//  2011-11-18	: ajout des tests + commentaires
//-----------------------------------------------------------
//
// Test la class Brelan.java
//
//-----------------------------------------------------------
// Comportement
//	testReconnaitreMain()	: effectue plusieurs tests sur la classe Brelan.java
//-----------------------------------------------------------

package test_unitaire;

import mains.Brelan;
import mains.Main;
import mains.ReqAnalyseMain;
import cartes.Denomination;
import cartes.Carte;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class BrelanTest extends TestCase {

	/**
	 * @param arg0
	 */
	public BrelanTest(String arg0) {
		super(arg0);
	}
	
	public static Test suite() {
		return new TestSuite(BrelanTest.class);
	}

	public void testReconnaitreMain() {
		/*
		 * Test avec main qui ne contient pas de Brelan
		 */
		Main main = new Main();
		main.add(new Carte(Denomination.TROIS, cartes.CouleurCarte.CARREAU));
		main.add(new Carte(Denomination.NEUF, cartes.CouleurCarte.COEUR));
		main.add(new Carte(Denomination.AS, cartes.CouleurCarte.COEUR));
		main.add(new Carte(Denomination.DAME, cartes.CouleurCarte.COEUR));
		main.add(new Carte(Denomination.DEUX, cartes.CouleurCarte.COEUR));
		
		assertFalse(new Brelan().reconnaitreMain(new ReqAnalyseMain(main)));

		/*
		 * Test avec main qui contient un brelan
		 */
		main = new Main();
		main.add(new Carte(Denomination.TROIS, cartes.CouleurCarte.CARREAU));
		main.add(new Carte(Denomination.TROIS, cartes.CouleurCarte.PIQUE));
		main.add(new Carte(Denomination.TROIS, cartes.CouleurCarte.TREFLE));
		main.add(new Carte(Denomination.VALET, cartes.CouleurCarte.COEUR));
		main.add(new Carte(Denomination.DIX, cartes.CouleurCarte.CARREAU));
		
		assertTrue(new Brelan().reconnaitreMain(new ReqAnalyseMain(main)));

		/*
		 * Test avec main qui contient un brelan d'as
		 */
		main = new Main();
		main.add(new Carte(Denomination.AS, cartes.CouleurCarte.PIQUE));
		main.add(new Carte(Denomination.AS, cartes.CouleurCarte.CARREAU));
		main.add(new Carte(Denomination.AS, cartes.CouleurCarte.TREFLE));
		main.add(new Carte(Denomination.ROI, cartes.CouleurCarte.COEUR));
		main.add(new Carte(Denomination.VALET, cartes.CouleurCarte.PIQUE));
		
		assertTrue(new Brelan().reconnaitreMain(new ReqAnalyseMain(main)));
		
		/*
		 * Test avec main qui contient une paire d'as
		 */
		main = new Main();
		main.add(new Carte(Denomination.AS, cartes.CouleurCarte.PIQUE));
		main.add(new Carte(Denomination.AS, cartes.CouleurCarte.CARREAU));
		main.add(new Carte(Denomination.DIX, cartes.CouleurCarte.TREFLE));
		main.add(new Carte(Denomination.ROI, cartes.CouleurCarte.COEUR));
		main.add(new Carte(Denomination.VALET, cartes.CouleurCarte.PIQUE));
		
		assertFalse(new Brelan().reconnaitreMain(new ReqAnalyseMain(main)));
		
		/*
		 * Test avec main de deux cartes
		 */
		main = new Main();
		main.add(new Carte(Denomination.AS, cartes.CouleurCarte.PIQUE));
		main.add(new Carte(Denomination.TROIS, cartes.CouleurCarte.CARREAU));
		
		assertFalse(new Brelan().reconnaitreMain(new ReqAnalyseMain(main)));
	}
}
